<?php
class Login extends MY_Controller {

	// Modelos utilizados en el controlador
	var $modelUserDAO = 'User_dao';
	var $modelUserDTO = 'User_dto';
	
	// Datos para pasar a las vistas
	var $pageTitle = 'Login';
	
	public function __construct()
    {
    	parent::__construct();
        $this->load->helper('form');
	}
	
	public function index($view = '', $dataView = array())
	{
		parent::_loadViews($this->template->getHomeView(), $dataView);
	}
	
	private function _loadUserModel()
	{
		$this->load->model("$this->modelUserDAO", 'User_dao');
		$this->load->model("$this->modelUserDTO", 'User_dto');
	}
	
	private function _loadLoginForm($data = array())
	{
		parent::_loadViews($this->template->getLoginView(), $data);
	}
	
	public function userValidation()
	{
		$this->_loadUserModel();
		$this->pageTitle = 'Login';
	
		// Se agregan las validaciones a los campos que corresponde
		$this->form_validation->set_rules('username', 'User Name', 'required|trim|min_length[2]|xss_clean|callback_validUsername');
		$this->form_validation->set_rules('password', 'Password', 'required|trim|min_length[2]|xss_clean');
		
        if ($this->form_validation->run() == FALSE)
        {
			// Alguno de los campos no pasó la validación anterior, vuelvo a mostrar el fomulario de edición	
			$this->_loadLoginForm();
        }else{
			$username = $this->input->post('username');
			$password = $this->input->post('password');
			
			$resultado = $this->User_dao->loginCorrecto($username, $password);
			
			if($resultado['validUser']) { // Si el logueo fue correcto, cargo los datos del usuario en la sesión
				$_SESSION['login'] = TRUE;
				$_SESSION[$this->template->getIdUserSessionName()] = $resultado['idUser'];
				$_SESSION[$this->template->getRolSessionName()] = $resultado['rol'];
				$_SESSION[$this->template->getUsernameSessionName()] = $resultado['name'];
				$_SESSION[$this->template->getEmailSessionName()] = $resultado['email'];
				$_SESSION[$this->template->getPermissionSessionName()] = $resultado['permissions'];
				
				redirect('round_input/getall');
			}
			else {
				$data['result'] = 'Login incorrecto';
				$this->_loadLoginForm($data);
			}
		}
	}
	
	function validUsername($usuario)
	{
		if (!$this->User_dao->existeNombreUsuario($usuario, 0)) {
			$this->form_validation->set_message('validUsername', 'The %s is not a valid user name.');
			return FALSE;
		}
		else {
			return TRUE;
		}
	}
	
	public function logout()
    {
		session_unset();
        session_destroy();
        $this->index();
    }
}